package com.quanyan.operative.service;

import com.quanyan.api.APIResponse;
import com.quanyan.operative.model.req.ReqOpDynamicCommentItem;
import com.quanyan.operative.model.req.ReqOpDynamicItem;
import com.quanyan.operative.model.resp.*;

import java.util.List;

/**
 * Created by slong.guo on 2016/12/23.
 */
public interface OpActivityService {

    /**
     * 获取当前有效的活动信息列表
     * @return List<RespActivityItem>
     */
    APIResponse<List<RespActivityItem>> getOpActivities();

    /**
     * 根据活动ID获取具体的活动信息
     * @param activityID 活动ID
     * @return RespActivityItem
     */
    APIResponse<RespActivityItem> getActivityInfo(int activityID);

    /**
     * 根据礼包模板ID获取礼包信息
     * @param rewardID
     * @return RespRewardItem
     */
    APIResponse<RespRewardItem> getRewardInfo(int rewardID);

    /**
     * 发布或修改动态
     * @param uid
     * @param reqOpDynamicItem
     * @return
     */
    APIResponse<RespPostDynamic> postDynamic(int uid, ReqOpDynamicItem reqOpDynamicItem);

    /**
     * 删除动态
     * @param uid
     * @param dynamicID
     * @param activityID
     * @return
     */
    APIResponse deleteDynamic(int uid, int dynamicID, int activityID);

    /**
     * 获取某条动态的信息
     * @param uid
     * @param activityID
     * @param dynamicID
     * @return
     */
    APIResponse<RespDynamicItem> getDynamicItem(int uid, int activityID, int dynamicID);

    /**
     * 获取某活动下的动态信息列表
     * @param uid
     * @param activityID
     * @param type
     * @param pageNo
     * @param perPage
     * @return
     */
    APIResponse<RespDynamicList> getDynamicList(int uid, int activityID, int type, int pageNo, int perPage);

    /**
     * 获取某个动态下的点赞用户列表
     * @param dynamicID
     * @param activityID
     * @param pageNo
     * @param perPage
     * @return
     */
    APIResponse<List<RespOpUserInfoItem>> getDynamicLikeList(int dynamicID, int activityID, int pageNo, int perPage);

    /**
     * 添加某条动态的阅读或点赞量
     * @param uid
     * @param dynamicID
     * @param activityID
     * @param type
     * @return
     */
    APIResponse<RespDynamicReadAndLike> addDynamicReadAndLike(int uid, int dynamicID, int activityID, int type);

    /**
     * 对某条动态进行评论或回复某动态下的某条评论
     * @param uid
     * @param commentItem
     * @return
     */
    APIResponse<RespPostComment> postComment(int uid, ReqOpDynamicCommentItem commentItem);

    /**
     * 删除评论
     * @param uid
     * @param commentID
     * @param dynamicID
     * @param activityID
     * @return
     */
    APIResponse deleteComment(int uid, int commentID, int dynamicID, int activityID);

    /**
     * 获取某条动态下的某个评论
     * @param commentID
     * @param dynamicID
     * @param activityID
     * @return
     */
    APIResponse<RespDynamicCommentItem> getCommentItem(int commentID, int dynamicID, int activityID);

    /**
     * 获取某条动态下的评论列表
     * @param dynamicID
     * @param activityID
     * @param pageNo
     * @param perPage
     * @return
     */
    APIResponse<RespDynamicCommentList> getCommentList(int dynamicID, int activityID, int pageNo, int perPage);


}
